--
-- Correccion en el query de determinacion del ejercicio. Fallaba cuando hay varios ejercicios que se superponen
--


CREATE OR REPLACE FUNCTION public.tg_comm_ins_upd_controlfechas()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE NOT LEAKPROOF
AS $BODY$
DECLARE
  vFechaIni  date;
  vFechaFin  date;
BEGIN
IF (TG_OP = 'INSERT') THEN
   NEW.fecharesumen:= UltimoDiaMes(date(New.fecha));
ELSE  
	IF  OLD.fecha <> NEW.fecha THEN
		NEW.fecharesumen:= UltimoDiaMes(date(New.fecha));
		IF (OLD.fechaemision = OLD.fecha) and (OLD.fechaemision = NEW.fechaemision) THEN
			NEW.fechaemision:= NEW.fecha;
		END IF;
		IF (OLD.fechaentrega = OLD.fecha) and (OLD.fechaentrega = NEW.fechaentrega)  THEN
			NEW.fechaentrega:= NEW.fecha;
		END IF;
	END IF;
END IF;

IF NEW.Escontable = 'S' THEN
   NEW.fecharesumen := 	COALESCE( (SELECT ctbeje.FechaFin  
	          					   FROM ctbeje
								   WHERE ctbeje.habilitado = 'S' AND NEW.Fecha between ctbeje.fechaini AND ctbeje.fechafin AND
  									   date_part('month', NEW.Fecha) = date_part('month', ctbeje.FechaFin)  LIMIT 1
								   ), NEW.fechaResumen);
END IF;

RETURN NEW;
END;
$BODY$;

ALTER FUNCTION public.tg_comm_ins_upd_controlfechas()
    OWNER TO abacouser;
--
SELECT aaVersion('505.03', '505.02');
--




